home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 1 / LSD Compendium Deluxe 1.iso / a / programming / assembly / is-1pixsin.lha / Inner_City_HB.s < prev    next >
Encoding:
Text File  |  1990-09-13  |  33.1 KB  |  1,383 lines

  1.         SECTION    Uno-Pixel,code_c
  2.  
  3.         opt    c-
  4.  
  5. pheight        = 200
  6. pwidth        = 40
  7. psize        = pwidth*pheight
  8. execbase    = 4
  9. openlib        = -408
  10. closelib    = -414
  11.  
  12. **************************************
  13. fontheight    = 16
  14. **************************************
  15.  
  16. run:                * no doubt or nodout
  17.     move.l    $80,otrap0
  18.     move.l    #prog,$80
  19.     trap    #0
  20.     move.l    otrap0,$80
  21.     rts
  22.  
  23. prog
  24.     movem.l    d0-d7/a0-a6,-(sp)
  25.     bsr    init_music
  26.     lea    $dff000,a5
  27.     bsr    init_stuff
  28.     bsr    clearsprites
  29.     bsr    buildmulus
  30.     bsr    setup
  31.     move.l    execbase,a6
  32.     clr.l    38(a6)
  33.     lea    graphname(pc),a1
  34.     moveq    #0,d0
  35.     jsr    openlib(a6)
  36.     tst.l    d0
  37.     beq    quit
  38.     move.l    d0,a1
  39.     move.l    38(a1),oldcop
  40.     jsr    closelib(a6)
  41.     move    #$4000,intena(a5)
  42.     move.l    $6c,oldl3
  43.     move    intenar(a5),d0
  44.     or    #$c000,d0
  45.  
  46.     move    d0,saveirq
  47.     move    #%001111111111111,intena(a5)
  48.     move.l    #newl3,$6c
  49.     move    #$80,dmacon(a5)
  50.     clr    copjmp1(a5)
  51.     move.l    #newcop,cop1lch(a5)
  52.     move    #$8080,dmacon(a5)
  53.     clr.w    bltcon1(a5)
  54.     move.l    #$ffffffff,bltafwm(a5)
  55.     move    #$c010,intena(a5)
  56. wait    
  57.     btst    #6,$bfe001
  58.     bne.s    wait
  59. quit
  60.     move    #$80,dmacon(a5)
  61.     move.l    oldcop,cop1lch(a5)
  62.     clr    copjmp1(a5)
  63.     move    #$4000,intena(a5)
  64.     move.l    oldl3,$6c
  65. blitfinito
  66.     btst    #14,dmaconr(a5)
  67.     bne.s    blitfinito
  68.     bsr    end_music
  69.     move    #$80a0,dmacon(a5)
  70.     move    saveirq,intena(a5)
  71.     move    #$f,dmacon(a5)
  72.     movem.l    (sp)+,d0-d7/a0-a6
  73.     rte
  74.  
  75. newl3
  76.     and    #$10,intreqr(a5)        
  77.     beq.s    out
  78.     movem.l d0-d7/a0-a6,-(sp)
  79.     btst    #10,$dff016
  80.     bne.s    .skip
  81.     add    #1,scrolldelay
  82. .skip
  83.     move    #$400,dmacon(a5)
  84.     bsr    mighty_fine
  85.     bsr    logoshaker
  86.     bsr    play
  87.     move    #$8400,dmacon(a5)
  88.     movem.l (sp)+,d0-d7/a0-a6
  89. out    move    #$0070,intreq(a5)
  90.     rte
  91.  
  92. buildmulus
  93.     lea    sinetable,a0
  94. buildloop
  95.     move    (a0),d0
  96.     mulu    #40,d0
  97.     move    d0,(a0)+
  98.     cmp.l    #stopsine,a0
  99.     blt.s    buildloop
  100.     rts
  101.  
  102. ****************************************        
  103.  
  104. mighty_fine
  105.     move.l    #buff1,d0
  106.     move.l    #buff2,d1
  107.     tst.w    display_count
  108.     beq.s    usea
  109.     exg.l    d0,d1
  110.     move    #0,display_count
  111.     bra.s    skipmove
  112. usea
  113.     move    #1,display_count    
  114. skipmove
  115.     move.l    d0,curscreen
  116.     move.l    d1,newscreen
  117.     move    d0,p6lo
  118.     swap    d0
  119.     move    d0,p6hi
  120.     cmp.w    #0,scrolldelay
  121.     beq.s    .skip
  122.     sub    #1,scrolldelay
  123.     move.b    #1,delay_flag
  124.     bra.s    nohorizscroll
  125. .skip
  126.     move.b    #0,delay_flag
  127. njw    btst    #14,dmaconr(a5)
  128.     bne.s    njw
  129.     move.l    #$ffffffff,bltafwm(a5)
  130.     move    #0,bltamod(a5)
  131.     move    #0,bltdmod(a5)            ;ok
  132.     move.l    #scrollzone+2,bltapth(a5)
  133.     move.l    #scrollzone,bltdpth(a5)
  134.     move    #$e9f0,bltcon0(a5)
  135.     move    #(fontheight*64)+21,bltsize(a5)
  136.     move    #$8400,dmacon(a5)
  137. nohorizscroll
  138.     btst    #14,dmaconr(a5)
  139.     bne.s    nohorizscroll
  140.     move    #$400,dmacon(a5)
  141.     move    #$0dfc,bltcon0(a5)
  142.     move    #$ffff,bltafwm(a5)
  143.     move    #40,bltamod(a5)
  144.     move    #38,bltbmod(a5)
  145.     move    #38,bltdmod(a5)
  146.     lea    scrollzone+2,a0
  147.     move.l    curscreen,a3
  148.     move.l    sineptr,a2
  149.     move    #$8000,d6            ;Mask in D6.
  150.     moveq    #19,d7
  151. dovert    
  152.     move.l    a3,a1
  153.     add    (a2)+,a1
  154.     move    #$8400,dmacon(a5)
  155.     
  156. .wt
  157.     btst    #14,dmaconr(a5)
  158.     bne.s    .wt
  159.     move    #$400,dmacon(a5)
  160.     move.l    a0,bltapth(a5)
  161.     move.l    a1,bltbpth(a5)
  162.     move.l    a1,bltdpth(a5)
  163.     move    d6,bltafwm(a5)
  164.     move    #(fontheight*64)+1,bltsize(a5)
  165. oksin1    
  166.     ror    #1,d6
  167.     bpl.s    dovert
  168.     lea    2(a0),a0
  169.     lea    2(a3),a3
  170.     dbra    d7,dovert
  171.     cmp.b    #0,delay_flag
  172.     bne.s    nochar
  173.     add    #2,pixelcount
  174.     and    #$f,pixelcount
  175.     bne.s    nochar    
  176.     move.l    textptr,a0
  177.     cmp.b    #$fe-32,(a0)
  178.     bne.s    skipo
  179.     move    #400,scrolldelay
  180.     add.l    #1,a0
  181.     move.l    a0,textptr
  182. skipo
  183.     cmp.b    #$ff,(a0)
  184.     bne.s    notwrap
  185.     move.l    #text,a0
  186. notwrap    
  187.     move.b    (a0)+,d0
  188.     and    #$ff,d0
  189.     lsl    #1,d0
  190.     lea    font,a1    
  191.     lea    (a1,d0),a1
  192.     move.l    #scrollzone,a2
  193.     moveq    #fontheight-1,d7
  194. cloop    move    (a1),(a2)
  195.     lea    120(a1),a1        ;font layed out as straight line
  196.     lea    42(a2),a2
  197.     dbra    d7,cloop
  198.     move.l    a0,textptr
  199. nochar    btst    #14,dmaconr(a5)
  200.     bne.s    nochar
  201.     move    #$100,bltcon0(a5)
  202.     move.l    newscreen,bltdpth(a5)
  203.     move    #0,bltamod(a5)
  204.     move    #0,bltdmod(a5)
  205.     move    #(187*64)+20,bltsize(a5)
  206.     add.l    #2,sineptr
  207.     cmp.l    #endsine,sineptr
  208.     blt.s    exit
  209.     sub.l    #endsine-sinetable,sineptr
  210. exit    rts
  211.  
  212. ***************************************
  213. graphname
  214.     dc.b    'graphics.library',0
  215.     even
  216. gbase    dc.l    0
  217. oldcop    dc.l    0
  218. oldl3    dc.l    0
  219. saveirq    dc.w    0
  220. display_count    dc.w    0
  221. otrap0    dc.l    0
  222. sineptr    dc.l    sinetable
  223. scrolldelay
  224.     dc.w    0
  225. delay_flag    dc.b    0
  226.         even
  227. pixelcount
  228.     dc.w    0
  229.  
  230. setup
  231.     move.l    #text,a0
  232. loopu
  233.     move.b    (a0),d0
  234.     sub.b    #32,d0
  235.     move.b    d0,(a0)+
  236.     cmp.b    #$ff,(a0)
  237.     bne.s    loopu
  238.     rts
  239.  
  240. sinetable
  241.     dc.w  0,0,0,0,0,0,0,1,1,1,1,2,2,2,3 
  242.     dc.w  3,3,4,4,5,5,6,6,7,7,8,9,9,10,11 
  243.     dc.w  11,12,13,14,15,15,16,17,18,19,20,21,22,23,24 
  244.     dc.w  25,26,27,28,29,30,32,33,34,35,36,37,39,40,41 
  245.     dc.w  42,44,45,46,48,49,50,52,53,55,56,57,59,60,62 
  246.     dc.w  63,64,66,67,69,70,72,73,75,76,78,79,81,82,84 
  247.     dc.w  85,86,88,89,91,92,94,95,97,98,100,101,103,104,106 
  248.     dc.w  107,108,110,111,113,114,115,117,118,120,121,122,124,125,126 
  249.     dc.w  128,129,130,131,133,134,135,136,137,138,140,141,142,143,144 
  250.     dc.w  145,146,147,148,149,150,151,152,153,154,155,155,156,157,158 
  251.     dc.w  159,159,160,161,161,162,163,163,164,164,165,165,166,166,167 
  252.     dc.w  167,167,168,168,168,169,169,169,169,170,170,170,170,170,170 
  253.     dc.w  170,170,170,170,170,170,170,169,169,169,169,168,168,168,167 
  254.     dc.w  167,167,166,166,165,165,164,164,163,163,162,161,161,160,159 
  255.     dc.w  159,158,157,156,155,155,154,153,152,151,150,149,148,147,146 
  256.     dc.w  145,144,143,142,141,140,138,137,136,135,134,133,131,130,129 
  257.     dc.w  128,126,125,124,122,121,120,118,117,115,114,113,111,110,108 
  258.     dc.w  107,106,104,103,101,100,98,97,95,94,92,91,89,88,86 
  259.     dc.w  85,84,82,81,79,78,76,75,73,72,70,69,67,66,64 
  260.     dc.w  63,62,60,59,57,56,55,53,52,50,49,48,46,45,44 
  261.     dc.w  43,41,40,39,37,36,35,34,33,32,30,29,28,27,26 
  262.     dc.w  25,24,23,22,21,20,19,18,17,16,15,15,14,13,12 
  263.     dc.w  11,11,10,9,9,8,7,7,6,6,5,5,4,4,3 
  264.     dc.w  3,3,2,2,2,1,1,1,1,0,0,0,0,0,0
  265.     dc.w  0,0,0,0 
  266. endsine 
  267.     dc.w  0,0,0,0,0,0,0,1,1,1,1,2,2,2,3 
  268.     dc.w  3,3,4,4,5,5,6,6,7,7,8,9,9,10,11 
  269.     dc.w  11,12,13,14,15,15,16,17,18,19,20,21,22,23,24 
  270.     dc.w  25,26,27,28,29,30,32,33,34,35,36,37,39,40,41 
  271.     dc.w  42,44,45,46,48,49,50,52,53,55,56,57,59,60,62 
  272.     dc.w  63,64,66,67,69,70,72,73,75,76,78,79,81,82,84 
  273.     dc.w  85,86,88,89,91,92,94,95,97,98,100,101,103,104,106 
  274.     dc.w  107,108,110,111,113,114,115,117,118,120,121,122,124,125,126 
  275.     dc.w  128,129,130,131,133,134,135,136,137,138,140,141,142,143,144 
  276.     dc.w  145,146,147,148,149,150,151,152,153,154,155,155,156,157,158 
  277.     dc.w  159,159,160,161,161,162,163,163,164,164,165,165,166,166,167 
  278.     dc.w  167,167,168,168,168,169,169,169,169,170,170,170,170,170,170 
  279.     dc.w  170,170,170,170,170,170,170,169,169,169,169,168,168,168,167 
  280.     dc.w  167,167,166,166,165,165,164,164,163,163,162,161,161,160,159 
  281.     dc.w  159,158,157,156,155,155,154,153,152,151,150,149,148,147,146 
  282.     dc.w  145,144,143,142,141,140,138,137,136,135,134,133,131,130,129 
  283.     dc.w  128,126,125,124,122,121,120,118,117,115,114,113,111,110,108 
  284.     dc.w  107,106,104,103,101,100,98,97,95,94,92,91,89,88,86 
  285.     dc.w  85,84,82,81,79,78,76,75,73,72,70,69,67,66,64 
  286.     dc.w  63,62,60,59,57,56,55,53,52,50,49,48,46,45,44 
  287.     dc.w  43,41,40,39,37,36,35,34,33,32,30,29,28,27,26 
  288.     dc.w  25,24,23,22,21,20,19,18,17,16,15,15,14,13,12 
  289.     dc.w  11,11,10,9,9,8,7,7,6,6,5,5,4,4,3 
  290.     dc.w  3,3,2,2,2,1,1,1,1,0,0,0,0,0,0
  291.     dc.w  0,0,0,0 
  292. stopsine
  293. ***********************************************
  294. init_stuff
  295.     move.l    #piccy,d0
  296.     move    d0,p1lo
  297.     swap    d0
  298.     move    d0,p1hi
  299.     swap    d0
  300.     add.l    #psize,d0
  301.     move    d0,p2lo
  302.     swap    d0
  303.     move    d0,p2hi
  304.     swap    d0
  305.     add.l    #psize,d0
  306.     move    d0,p3lo
  307.     swap    d0
  308.     move    d0,p3hi
  309.     swap    d0
  310.     add.l    #psize,d0
  311.     move    d0,p4lo
  312.     swap    d0
  313.     move    d0,p4hi
  314.     swap    d0
  315.     add.l    #psize,d0
  316.     move    d0,p5lo
  317.     swap    d0
  318.     move    d0,p5hi
  319.     move.l    #buff1,d0
  320.     move    d0,p6lo
  321.     swap    d0
  322.     move    d0,p6hi
  323.     move.l    #logo,d0
  324.     move    d0,l1lo
  325.     swap    d0
  326.     move    d0,l1hi
  327.     swap    d0
  328.     add.l    #(51*78),d0
  329.     move    d0,l2lo
  330.     swap    d0
  331.     move    d0,l2hi
  332.     swap    d0
  333.     add.l    #(51*78),d0
  334.     move    d0,l3lo
  335.     swap    d0
  336.     move    d0,l3hi
  337.     rts
  338.  
  339. clearsprites
  340.     lea    $dff144,a0
  341.     moveq    #7,d7
  342. loopydo
  343.     clr.l    (a0)
  344.     lea    4(a0),a0
  345.     dbra    d7,loopydo
  346.     rts
  347.  
  348. text    DC.B    "    INNER  CITY     ",$FE
  349.     DC.B    "      PRESENTS      ",$FE
  350.     DC.B    "    A NEW CRACK     ",$FE
  351.     DC.B    " CODED IN 1990 BY "
  352.     DC.B    " HOTWIRE/INNER CITY ",$FE
  353.     DC.B    "MEGA-GREETS GOTO MOSES AND DR.DUBBS OF MODESTY "
  354.     DC.B    "FOR BEING SUCH COOL DUDES .... NOW THE CREDITS OF "
  355.     DC.B    "THE INTRO .... "
  356.     DC.B    " CODING :"
  357.     DC.B    " HOTWIRE/INNER CITY ",$FE
  358.     DC.B    "  -  GRAPHICS : "
  359.     DC.B    "  POD OF INNER CITY ",$FE 
  360.     DC.B    "-  MUSIC : "
  361.     DC.B    "UNCLE TOM & ZIPHOID ",$FE
  362.     DC.B    "  AND IS TAKEN FROM "
  363.     DC.B    "RAZOR 1911+S MUSIC DISK CALLED #DELICATE SOUNDS# "
  364.     DC.B    "RIPPED BY HOTWIRE ..... "
  365.     DC.B    "          "
  366.     DC.B    "GREETINGS GOTO ALL "
  367.     dc.b    " INNER CITY MEMBERS ",$FE
  368.     dc.b    "- ALSO A SPECIAL "
  369.     DC.B    "GREET GOES TO  "
  370.     dc.b    "  JROK+90 OF MAYHEM ",$FE
  371.     dc.b    "-  "
  372.     dc.b    "A.D.S. OF INNER CITY",$FE
  373.     DC.B    " -  "
  374.     DC.B    "Q.E.D. OF INNER CITY",$FE
  375.     dc.b    "  - "
  376.     DC.B    " MYSTIK OF EXTREME  -  COUNT ZERO AND RASTER OF "
  377.     DC.B    "ANTHROX  -  DR.C OF RED SECTOR  -  VANDAL AND STATIC "
  378.     DC.B    "OF PARADOX  -  ICEMAN OF MODESTY  -  FIREFLY,ZARCHY,LAMESLUG"
  379.     DC.B    " AND BANDASNATCH OF T.H.R.  -  POWERCUT OF MAYHEM  -  ZEUS OF "
  380.     DC.B    "PUBLIC ENEMIES  -  DR.ZERONINE OF QUADLITE  -  "
  381.     DC.B    "I AM SORRY IF I MISSED ANYBODY OUT , SEE MY SINE IS MELLOW "
  382.     DC.B    "DEMO FOR THE FULL GREETINGS LIST ..... PRESS THE LEFT MOUSE "
  383.     DC.B    "BUTTON PLEASE ..... IF YOU WANT TO CONTACT ME (HOTWIRE) FOR "
  384.     DC.B    "CODING OR DEMO-SWAPPING (ONLY) AND WISH TO DO IT BEFORE "
  385.     DC.B    "10:00 PM THEN PLEASE PHONE ENGLAND ON "
  386.     DC.B    "    0670 - 717513   ",$FE
  387.     DC.B    " SCROLLTEXT WILL WRAP IN THE COUNT DOWN  10  9  8  7  6  5  4  "
  388.     DC.B    "3  2  1  0                                                    "
  389.     DC.B    $FF    
  390.     even
  391.  
  392. textptr    dc.l    text
  393.  
  394. logoshaker
  395.     move.l    logosineptr,a0
  396.     cmp.l    #endlogosine,a0
  397.     blt.s    .skip
  398.     move.l    #logosine,logosineptr
  399.     move.l    logosineptr,a0
  400. .skip
  401.     move    (a0),d0
  402.     add    #151,d0
  403.     move    d0,d1
  404.     asr    #3,d0
  405.     move    d0,d2
  406.     and    #$f,d1
  407.     eor    #$f,d1
  408.     move    d1,d3
  409.     lsl    #4,d3
  410.     or    d3,d1
  411.     move    d1,fineshift    
  412.     add.l    #logo-2,d2    ;d2 contains byte pos; yippee
  413.     move    d2,l1lo
  414.     swap    d2
  415.     move    d2,l1hi
  416.     swap    d2
  417.     add    #(51*78),d2    
  418.     move    d2,l2lo
  419.     swap    d2
  420.     move    d2,l2hi
  421.     swap    d2
  422.     add    #(51*78),d2
  423.     move    d2,l3lo
  424.     swap    d2
  425.     move    d2,l3hi
  426.     add.l    #10,logosineptr
  427.     rts
  428.  
  429. ********************************************
  430.  
  431. logosine
  432.     dc.w         0,  3,  5,  8, 11, 13, 16, 18, 21, 24, 26, 29
  433.     dc.w        31, 34, 37, 39, 42, 44, 47, 49, 52, 54, 57, 59
  434.     dc.w        61, 64, 66, 69, 71, 73, 75, 78, 80, 82, 84, 87
  435.     dc.w        89, 91, 93, 95, 97, 99,101,103,105,107,109,110
  436.     dc.w       112,114,116,117,119,121,122,124,125,127,128,129
  437.     dc.w       131,132,133,135,136,137,138,139,140,141,142,143
  438.     dc.w       144,144,145,146,147,147,148,148,149,149,150,150
  439.     dc.w       150,150,151,151,151,151,151,151,151,151,151,150
  440.     dc.w       150,150,150,149,149,148,148,147,147,146,145,144
  441.     dc.w       144,143,142,141,140,139,138,137,136,135,133,132
  442.     dc.w       131,129,128,127,125,124,122,121,119,117,116,114
  443.     dc.w       112,110,109,107,105,103,101, 99, 97, 95, 93, 91
  444.     dc.w        89, 87, 84, 82, 80, 78, 76, 73, 71, 69, 66, 64
  445.     dc.w        61, 59, 57, 54, 52, 49, 47, 44, 42, 39, 37, 34
  446.     dc.w        31, 29, 26, 24, 21, 18, 16, 13, 11,  8,  5,  3
  447.     dc.w         0, -2, -5, -7,-10,-13,-15,-18,-21,-23,-26,-28
  448.     dc.w       -31,-33,-36,-39,-41,-44,-46,-49,-51,-54,-56,-59
  449.     dc.w       -61,-63,-66,-68,-70,-73,-75,-77,-80,-82,-84,-86
  450.     dc.w       -88,-90,-92,-95,-97,-99,-101,-102,-104,-106,-108,-110
  451.     dc.w       -112,-113,-115,-117,-118,-120,-122,-123,-125,-126,-128,-129
  452.     dc.w       -130,-132,-133,-134,-135,-136,-137,-138,-140,-140,-141,-142
  453.     dc.w       -143,-144,-145,-145,-146,-147,-147,-148,-148,-149,-149,-149
  454.     dc.w       -150,-150,-150,-150,-150,-150,-151,-150,-150,-150,-150,-150
  455.     dc.w       -150,-149,-149,-149,-148,-148,-147,-147,-146,-145,-145,-144
  456.     dc.w       -143,-142,-141,-140,-140,-138,-137,-136,-135,-134,-133,-132
  457.     dc.w       -130,-129,-128,-126,-125,-123,-122,-120,-118,-117,-115,-113
  458.     dc.w       -112,-110,-108,-106,-104,-102,-101,-99,-97,-95,-92,-90
  459.     dc.w       -88,-86,-84,-82,-80,-77,-75,-73,-70,-68,-66,-63
  460.     dc.w       -61,-59,-56,-54,-51,-49,-46,-44,-41,-39,-36,-33
  461.     dc.w       -31,-28,-26,-23,-21,-18,-15,-13,-10, -7, -5, -2
  462. endlogosine
  463. logosineptr
  464.     dc.l    logosine    
  465. curscreen
  466.     dc.l    0
  467. newscreen
  468.     dc.l    0
  469. buff1
  470.     dcb.b    40*200,0
  471. buff2
  472.     dcb.b    40*200,0
  473. scrollzone
  474.     dcb.b    (16+1)*42,0
  475. mulutable
  476.     dcb.w    171,0
  477. font
  478.     incbin    df2:bitmaps/1911Font.bmap
  479. *************COPPERlist***********************
  480.  
  481. newcop    dc.w    dmacon,$0020
  482.     dc.w    diwstrt,$2c81
  483.     dc.w    diwstop,$2cc1
  484.     dc.w    ddfstrt,$0038
  485.     dc.w    ddfstop,$00d0
  486.     dc.w    bplcon0,$6200
  487.     dc.w    bplcon1,$0000
  488.     dc.w    bpl1mod,$0000
  489.     dc.w    bpl2mod,$0000
  490.     dc.w    $0180,$0000,$0182,$07ff,$0184,$0444,$0186,$0fff
  491.     dc.w    $0188,$0f00,$018a,$0aaa,$018c,$00f0,$018e,$0e72
  492.     dc.w    $0190,$006a,$0192,$0405,$0194,$0888,$0196,$0666
  493.     dc.w    $0198,$0555,$019a,$0333,$019c,$0222,$019e,$0000    
  494.     dc.w    $01a0,$0fff,$01a2,$0eee,$01a4,$0ddd,$01a6,$0ddd
  495.     dc.w    $01a8,$0ccc,$01aa,$0bbb,$01ac,$0aaa,$01ae,$0999
  496.     dc.w    $01b0,$0999,$01b2,$0888,$01b4,$0777,$01b6,$0666
  497.     dc.w    $01b8,$0666,$01ba,$0555,$01bc,$0444,$01be,$0620
  498.     dc.w    $e0
  499. p1hi    dc.w    0
  500.     dc.w    $e2
  501. p1lo    dc.w    0
  502.     dc.w    $e4
  503. p2hi    dc.w    0
  504.     dc.w    $e6
  505. p2lo    dc.w    0
  506.     dc.w    $e8
  507. p3hi    dc.w    0
  508.     dc.w    $ea
  509. p3lo    dc.w    0
  510.     dc.w    $ec
  511. p4hi    dc.w    0
  512.     dc.w    $ee
  513. p4lo    dc.w    0
  514.     dc.w    $f0
  515. p5hi    dc.w    0
  516.     dc.w    $f2
  517. p5lo    dc.w    0
  518.     dc.w    $f4
  519. p6hi    dc.w    0
  520.     dc.w    $f6
  521. p6lo    dc.w    0
  522.     dc.w    $1001,$fffe
  523.     dc.w    intreq,$8010
  524.     dc.w    $f001,$fffe
  525.     dc.w    bplcon0,$0200
  526.     dc.w    $f501,$fffe        ;Logo Start
  527.     dc.w    bplcon0,$3200
  528.     dc.w    $e0
  529. l1hi    dc.w    0
  530.     dc.w    $e2
  531. l1lo    dc.w    0
  532.     dc.w    $e4
  533. l2hi    dc.w    0
  534.     dc.w    $e6
  535. l2lo    dc.w    0
  536.     dc.w    $e8
  537. l3hi    dc.w    0
  538.     dc.w    $ea
  539. l3lo    dc.w    0
  540.     dc.w    bpl1mod,32
  541.     dc.w    bpl2mod,32
  542.     dc.w    diwstrt,$2c81
  543.     dc.w    diwstop,$2cc1
  544.     dc.w    ddfstrt,$0028
  545.     dc.w    ddfstop,$00d8
  546.     dc.w    bplcon1,$0000
  547.     dc.w    $0180,$0000,$0182,$0fea,$0184,$0db7,$0186,$0a84
  548.     dc.w    $0188,$0952,$018a,$0631,$018c,$0731,$018e,$0003
  549.     dc.w    bplcon1
  550. fineshift
  551.     dc.w    0
  552.     dc.w    $f601,$fffe,$18e,$0003
  553.     dc.w    $f701,$fffe,$18e,$0003
  554.     dc.w    $f801,$fffe,$18e,$0003
  555.     dc.w    $f901,$fffe,$18e,$0003
  556.     dc.w    $fa01,$fffe,$18e,$0003
  557.     dc.w    $fc01,$fffe,$18e,$0003
  558.     dc.w    $fd01,$fffe,$18e,$0003
  559.     dc.w    $fe01,$fffe,$18e,$0003
  560.     dc.w    $ff01,$fffe,$18e,$0003
  561.     dc.w    $ffe1,$fffe
  562.     dc.w    $0001,$fffe,$18e,$0003
  563.     dc.w    $0101,$fffe,$18e,$0003
  564.     dc.w    $0201,$fffe,$18e,$0003
  565.     dc.w    $0301,$fffe,$18e,$0003
  566.     dc.w    $0401,$fffe,$18e,$0003
  567.     dc.w    $0501,$fffe,$18e,$0003
  568.     dc.w    $0601,$fffe,$18e,$0003
  569.     dc.w    $0701,$fffe,$18e,$0003
  570.     dc.w    $0801,$fffe,$18e,$0004
  571.     dc.w    $0901,$fffe,$18e,$0005
  572.     dc.w    $0a01,$fffe,$18e,$0006
  573.     dc.w    $0b01,$fffe,$18e,$0007
  574.     dc.w    $0c01,$fffe,$18e,$0008
  575.     dc.w    $0d01,$fffe,$18e,$0009
  576.     dc.w    $0e01,$fffe,$18e,$000a
  577.     dc.w    $0f01,$fffe,$18e,$000b
  578.     dc.w    $1001,$fffe,$18e,$000c
  579.     dc.w    $1101,$fffe,$18e,$000d
  580.     dc.w    $1201,$fffe,$18e,$000e
  581.     dc.w    $1301,$fffe,$18e,$000f
  582.     dc.w    $1401,$fffe,$18e,$001f
  583.     dc.w    $1501,$fffe,$18e,$002f
  584.     dc.w    $1601,$fffe,$18e,$003f
  585.     dc.w    $1701,$fffe,$18e,$004f
  586.     dc.w    $1801,$fffe,$18e,$005f
  587.     dc.w    $1a01,$fffe,$18e,$006f
  588.     dc.w    $1b01,$fffe,$18e,$007f
  589.     dc.w    $1c01,$fffe,$18e,$008f
  590.     dc.w    $1d01,$fffe,$18e,$009f
  591.     dc.w    $1e01,$fffe,$18e,$00af
  592.     dc.w    $1f01,$fffe,$18e,$00bf
  593.     dc.w    $2001,$fffe,$18e,$00cf
  594.     dc.w    $2101,$fffe,$18e,$00df
  595.     dc.w    $2201,$fffe,$18e,$00ef
  596.     dc.w    $2301,$fffe,$18e,$00ff
  597.     dc.w    $2401,$fffe,$18e,$01ff
  598.     dc.w    $2501,$fffe,$18e,$02ff
  599.     dc.w    $2601,$fffe,$18e,$03ff
  600.     dc.w    $2701,$fffe,$18e,$04ff
  601.     dc.w    $2801,$fffe
  602.     dc.w    bplcon0,$0200    
  603.     dc.l    $ffff,$fffe
  604.  
  605. PLAY_MUSIC:
  606.     bra.W    PLAY
  607.  
  608. END_MUSIC:
  609.     clr.w    onoff
  610.     clr.l    $dff0a6
  611.     clr.l    $dff0b6
  612.     clr.l    $dff0c6
  613.     clr.l    $dff0d6
  614.     move.w    #$000f,$dff096
  615.     bclr    #1,$bfe001
  616.     rts
  617.     
  618. INIT_MUSIC:
  619.     move.w    #1,onoff
  620.     bset    #1,$bfe001
  621.     lea    MODULE,a0
  622.     lea    100(a0),a1
  623.     move.l    a1,SEQpoint
  624.     move.l    a0,a1
  625.     add.l    8(a0),a1
  626.     move.l    a1,PATpoint
  627.     move.l    a0,a1
  628.     add.l    16(a0),a1
  629.     move.l    a1,FRQpoint
  630.     move.l    a0,a1
  631.     add.l    24(a0),a1
  632.     move.l    a1,VOLpoint
  633.     move.l    4(a0),d0
  634.     divu    #13,d0
  635.     
  636.     lea    40(a0),a1
  637.     lea    SOUNDINFO+4(pc),a2
  638.     moveq    #10-1,d1
  639. initloop:
  640.     move.w    (a1)+,(a2)+
  641.     move.l    (a1)+,(a2)+
  642.     addq.w    #4,a2
  643.     dbf    d1,initloop
  644.     moveq    #0,d2
  645.     move.l    a0,d1
  646.     add.l    32(a0),d1
  647.     sub.l    #WAVEFORMS,d1
  648.     lea    SOUNDINFO(pc),a0
  649.     move.l    d1,(a0)+
  650.     moveq    #9-1,d3
  651. initloop1:
  652.     move.w    (a0),d2
  653.     add.l    d2,d1
  654.     add.l    d2,d1
  655.     addq.w    #6,a0
  656.     move.l    d1,(a0)+
  657.     dbf    d3,initloop1
  658.     
  659.     move.l    SEQpoint(pc),a0
  660.     moveq    #0,d2
  661.     move.b    12(a0),d2        ;Get replay speed
  662.     bne.s    speedok
  663.     move.b    #3,d2            ;Set default speed
  664. speedok:
  665.     move.w    d2,respcnt        ;Init repspeed counter
  666.     move.w    d2,repspd
  667. INIT2:
  668.     clr.w    audtemp
  669.     move.w    #$000f,$dff096        ;Disable audio DMA
  670.     move.w    #$0780,$dff09a        ;Disable Audio IRQ
  671.     moveq    #0,d7
  672.     mulu    #13,d0
  673.     moveq    #4-1,d6            ;Number of soundchannels-1
  674.     lea    V1data(pc),a0        ;Point to 1st voice data area
  675.     lea    SILENT(pc),a1
  676.     lea    o4a0c8(pc),a2
  677. initloop2:
  678.     move.l    a1,10(a0)
  679.     move.l    a1,18(a0)
  680.     clr.l    14(a0)
  681.     clr.b    45(a0)
  682.     clr.b    47(a0)
  683.     clr.w    8(a0)
  684.     clr.l    48(a0)
  685.     move.b    #$01,23(a0)
  686.     move.b    #$01,24(a0)
  687.     clr.b    25(a0)
  688.     clr.l    26(a0)
  689.     clr.w    30(a0)
  690.     moveq    #$00,d3
  691.     move.w    (a2)+,d1
  692.     move.w    (a2)+,d3
  693.     divu    #$0003,d3
  694.     move.b    d3,32(a0)
  695.     mulu    #$0003,d3
  696.     andi.l    #$00ff,d3
  697.     andi.l    #$00ff,d1
  698.     addi.l    #$dff0a0,d1
  699.     move.l    d1,a6
  700.     move.l    #$0000,(a6)
  701.     move.w    #$0100,4(a6)
  702.     move.w    #$0000,6(a6)
  703.     move.w    #$0000,8(a6)
  704.     move.l    d1,60(a0)
  705.     clr.w    64(a0)
  706.     move.l    SEQpoint(pc),(a0)
  707.     move.l    SEQpoint(pc),52(a0)
  708.     add.l    d0,52(a0)
  709.     add.l    d3,52(a0)
  710.     add.l    d7,(a0)
  711.     add.l    d3,(a0)
  712.     move.w    #$000d,6(a0)
  713.     move.l    (a0),a3
  714.     move.b    (a3),d1
  715.     andi.l    #$00ff,d1
  716.     lsl.w    #6,d1
  717.     move.l    PATpoint(pc),a4
  718.     adda.w    d1,a4
  719.     move.l    a4,34(a0)
  720.     clr.l    38(a0)
  721.     move.b    #$01,33(a0)
  722.     move.b    #$02,42(a0)
  723.     move.b    1(a3),44(a0)
  724.     move.b    2(a3),22(a0)
  725.     clr.b    43(a0)
  726.     clr.b    45(a0)
  727.     clr.w    56(a0)
  728.     adda.w    #$004a,a0    ;Point to next voice's data area
  729.     dbf    d6,initloop2
  730.     rts
  731.  
  732.         
  733. PLAY:
  734.     lea    pervol(pc),a6
  735.     tst.w    onoff
  736.     bne.s    music_on
  737.     rts
  738. music_on:
  739.     subq.w    #1,respcnt        ;Decrease replayspeed counter
  740.     bne.s    nonewnote
  741.     move.w    repspd(pc),respcnt    ;Restore replayspeed counter
  742.     lea    V1data(pc),a0        ;Point to voice1 data area
  743.     bsr.W    NEW_NOTE
  744.     lea    V2data(pc),a0        ;Point to voice2 data area
  745.     bsr.W    NEW_NOTE
  746.     lea    V3data(pc),a0        ;Point to voice3 data area
  747.     bsr.W    NEW_NOTE
  748.     lea    V4data(pc),a0        ;Point to voice4 data area
  749.     bsr.W    NEW_NOTE
  750. nonewnote:
  751.     clr.w    audtemp
  752.     lea    V1data(pc),a0
  753.     bsr.W    EFFECTS
  754.     move.w    d0,(a6)+
  755.     move.w    d1,(a6)+
  756.     lea    V2data(pc),a0
  757.     bsr.W    EFFECTS
  758.     move.w    d0,(a6)+
  759.     move.w    d1,(a6)+
  760.     lea    V3data(pc),a0
  761.     bsr.W    EFFECTS
  762.     move.w    d0,(a6)+
  763.     move.w    d1,(a6)+
  764.     lea    V4data(pc),a0
  765.     bsr.W    EFFECTS
  766.     move.w    d0,(a6)+
  767.     move.w    d1,(a6)+
  768.     lea    pervol(pc),a6
  769.     move.w    audtemp(pc),d0
  770.     ori.w    #$8000,d0            ;Set/clr bit = 1
  771.     move.w    d0,-(sp)
  772.     moveq    #0,d1
  773.     move.l    start1(pc),d2            ;Get samplepointers
  774.     move.w    offset1(pc),d1            ;Get offset
  775.     add.l    d1,d2                ;Add offset
  776.     move.l    start2(pc),d3
  777.     move.w    offset2(pc),d1
  778.     add.l    d1,d3
  779.     move.l    start3(pc),d4
  780.     move.w    offset3(pc),d1
  781.     add.l    d1,d4
  782.     move.l    start4(pc),d5
  783.     move.w    offset4(pc),d1
  784.     add.l    d1,d5
  785.     move.w    ssize1(pc),d0            ;Get sound lengths
  786.     move.w    ssize2(pc),d1
  787.     move.w    ssize3(pc),d6
  788.     move.w    ssize4(pc),d7
  789.     move.w    (sp)+,$dff096            ;Enable    audio DMA
  790. chan1:
  791.     lea    V1data(pc),a0
  792.     tst.w    72(a0)
  793.     beq.W    chan2
  794.     subq.w    #1,72(a0)
  795.     cmpi.w    #1,72(a0)
  796.     bne.s    chan2
  797.     clr.w    72(a0)
  798.     move.l    d2,$dff0a0            ;Set soundstart
  799.     move.w    d0,$dff0a4            ;Set soundlength
  800. chan2:
  801.     lea    V2data(pc),a0
  802.     tst.w    72(a0)
  803.     beq.s    chan3
  804.     subq.w    #1,72(a0)
  805.     cmpi.w    #1,72(a0)
  806.     bne.s    chan3
  807.     clr.w    72(a0)
  808.     move.l    d3,$dff0b0
  809.     move.w    d1,$dff0b4
  810. chan3:
  811.     lea    V3data(pc),a0
  812.     tst.w    72(a0)
  813.     beq.s    chan4
  814.     subq.w    #1,72(a0)
  815.     cmpi.w    #1,72(a0)
  816.     bne.s    chan4
  817.     clr.w    72(a0)
  818.     move.l    d4,$dff0c0
  819.     move.w    d6,$dff0c4
  820. chan4:
  821.     lea    V4data(pc),a0
  822.     tst.w    72(a0)
  823.     beq.s    setpervol
  824.     subq.w    #1,72(a0)
  825.     cmpi.w    #1,72(a0)
  826.     bne.s    setpervol
  827.     clr.w    72(a0)
  828.     move.l    d5,$dff0d0
  829.     move.w    d7,$dff0d4
  830. setpervol:
  831.     lea    $dff0a6,a5
  832.     move.w    (a6)+,(a5)            ;Set period
  833.     move.w    (a6)+,2(a5)            ;Set volume
  834.     move.w    (a6)+,16(a5)
  835.     move.w    (a6)+,18(a5)
  836.     move.w    (a6)+,32(a5)
  837.     move.w    (a6)+,34(a5)
  838.     move.w    (a6)+,48(a5)
  839.     move.w    (a6)+,50(a5)
  840.     rts
  841.  
  842. NEW_NOTE:
  843.     moveq    #0,d5
  844.     move.l    34(a0),a1
  845.     adda.w    40(a0),a1
  846.     cmp.w    #64,40(a0)
  847.     bne.W    samepat
  848.     move.l    (a0),a2
  849.     adda.w    6(a0),a2            ;Point to next sequence row
  850.     cmpa.l    52(a0),a2             ;Is it the end?
  851.     bne.s    notend
  852.     move.w    d5,6(a0)            ;yes!
  853.     move.l    (a0),a2                ;Point to first sequence
  854. notend:
  855.     moveq    #0,d1
  856.     addq.b    #1,spdtemp
  857.     cmpi.b    #4,spdtemp
  858.     bne.s    nonewspd
  859.     move.b    d5,spdtemp
  860. ;    move.b    -1(a1),d1            ;Get new replay speed
  861. ;    beq.s    nonewspd
  862. ;    move.w    d1,respcnt            ;store in counter
  863. ;    move.w    d1,repspd
  864. nonewspd:
  865.     move.b    (a2),d1                ;Pattern to play
  866.     move.b    1(a2),44(a0)            ;Transpose value
  867.     move.b    2(a2),22(a0)            ;Soundtranspose value
  868.  
  869.     move.w    d5,40(a0)
  870.     lsl.w    #6,d1
  871.     add.l    PATpoint(pc),d1            ;Get pattern pointer
  872.     move.l    d1,34(a0)
  873.     addi.w    #$000d,6(a0)
  874.     move.l    d1,a1
  875. samepat:
  876.     move.b    1(a1),d1            ;Get info byte
  877.     move.b    (a1)+,d0            ;Get note
  878.     bne.s    ww1
  879.     andi.w    #%11000000,d1
  880.     beq.s    noport
  881.     bra.s    ww11
  882. ww1:
  883.     move.w    d5,56(a0)
  884. ww11:
  885.     move.b    d5,47(a0)
  886.     move.b    (a1),31(a0)
  887.  
  888.                 ;31(a0)    = PORTAMENTO/INSTR. info
  889.                 ;Bit 7 = portamento on
  890.                 ;Bit 6 = portamento off
  891.                 ;Bit 5-0 = instrument number
  892.                 ;47(a0) = portamento value
  893.                 ;Bit 7-5 = always zero
  894.                 ;Bit 4 = up/down
  895.                 ;Bit 3-0 = value
  896. t_porton:
  897.     btst    #7,d1
  898.     beq.s    noport
  899.     move.b    2(a1),47(a0)    
  900. noport:
  901.     andi.w    #$007f,d0
  902.     beq.W    nextnote
  903.     move.b    d0,8(a0)
  904.     move.b    (a1),9(a0)
  905.     move.b    32(a0),d2
  906.     moveq    #0,d3
  907.     bset    d2,d3
  908.     or.w    d3,audtemp
  909.     move.w    d3,$dff096
  910.     move.b    (a1),d1
  911.     andi.w    #$003f,d1            ;Max 64 instruments
  912.     add.b    22(a0),d1
  913.     move.l    VOLpoint(pc),a2
  914.     lsl.w    #6,d1
  915.     adda.w    d1,a2
  916.     move.w    d5,16(a0)
  917.     move.b    (a2),23(a0)
  918.     move.b    (a2)+,24(a0)
  919.     move.b    (a2)+,d1
  920.     andi.w    #$00ff,d1
  921.     move.b    (a2)+,27(a0)
  922.     move.b    #$40,46(a0)
  923.     move.b    (a2)+,d0
  924.     move.b    d0,28(a0)
  925.     move.b    d0,29(a0)
  926.     move.b    (a2)+,30(a0)
  927.     move.l    a2,10(a0)
  928.     move.l    FRQpoint(pc),a2
  929.     lsl.w    #6,d1
  930.     adda.w    d1,a2
  931.     move.l    a2,18(a0)
  932.     move.w    d5,50(a0)
  933.     move.b    d5,26(a0)
  934.     move.b    d5,25(a0)
  935. nextnote:
  936.     addq.w    #2,40(a0)
  937.     rts
  938.     
  939. EFFECTS:
  940.     moveq    #0,d7
  941. testsustain:
  942.     tst.b    26(a0)            ;Is sustain counter = 0
  943.     beq.s    sustzero
  944.     subq.b    #1,26(a0)        ;if no, decrease counter
  945.     bra.W    VOLUfx
  946. sustzero:                ;Next part of effect sequence
  947.     move.l    18(a0),a1        ;can be executed now.
  948.     adda.w    50(a0),a1
  949. testeffects:
  950.     cmpi.b    #$e1,(a1)        ;E1 = end of FREQseq sequence
  951.     beq.W    VOLUfx
  952.     cmpi.b    #$e0,(a1)        ;E0 = loop to other part of sequence
  953.     bne.s    testnewsound
  954.     move.b    1(a1),d0        ;loop to start of sequence + 1(a1)
  955.     andi.w    #$003f,d0
  956.     move.w    d0,50(a0)
  957.     move.l    18(a0),a1
  958.     adda.w    d0,a1
  959. testnewsound:
  960.     cmpi.b    #$e2,(a1)        ;E2 = set waveform
  961.     bne.s    o49c64
  962.     moveq    #0,d0
  963.     moveq    #0,d1
  964.     move.b    32(a0),d1
  965.     bset    d1,d0
  966.     or.w    d0,audtemp
  967.     move.w    d0,$dff096
  968.     move.b    1(a1),d0
  969.     andi.w    #$00ff,d0
  970.     lea    SOUNDINFO(pc),a4
  971.     add.w    d0,d0
  972.     move.w    d0,d1
  973.     add.w    d1,d1
  974.     add.w    d1,d1
  975.     add.w    d1,d0
  976.     adda.w    d0,a4
  977.     move.l    60(a0),a3
  978.     move.l    (a4),d1
  979.     add.l    #WAVEFORMS,d1
  980.     move.l    d1,(a3)
  981.     move.l    d1,68(a0)
  982.     move.w    4(a4),4(a3)
  983.     move.l    6(a4),64(a0)
  984.     swap    d1
  985.     move.w    #$0003,72(a0)
  986.     tst.w    d1
  987.     bne.s    o49c52
  988.     move.w    #$0002,72(a0)
  989. o49c52:
  990.     clr.w    16(a0)
  991.     move.b    #$01,23(a0)
  992.     addq.w    #2,50(a0)
  993.     bra.W    o49d02
  994. o49c64:
  995.     cmpi.b    #$e4,(a1)
  996.     bne.s    testpatjmp
  997.     move.b    1(a1),d0
  998.     andi.w    #$00ff,d0
  999.     lea    SOUNDINFO(pc),a4
  1000.     add.w    d0,d0
  1001.     move.w    d0,d1
  1002.     add.w    d1,d1
  1003.     add.w    d1,d1
  1004.     add.w    d1,d0
  1005.     adda.w    d0,a4
  1006.     move.l    60(a0),a3
  1007.     move.l    (a4),d1
  1008.     add.l    #WAVEFORMS,d1
  1009.     move.l    d1,(a3)
  1010.     move.l    d1,68(a0)
  1011.     move.w    4(a4),4(a3)
  1012.     move.l    6(a4),64(a0)
  1013.     
  1014.     swap    d1
  1015.     move.w    #$0003,72(a0)
  1016.     tst.w    d1
  1017.     bne.s    o49cae
  1018.     move.w    #$0002,72(a0)
  1019. o49cae:
  1020.     addq.w    #2,50(a0)
  1021.     bra.s    o49d02
  1022. testpatjmp:
  1023.     cmpi.b    #$e7,(a1)
  1024.     bne.s    testnewsustain
  1025.     move.b    1(a1),d0
  1026.     andi.w    #$00ff,d0
  1027.     lsl.w    #6,d0
  1028.     move.l    FRQpoint(pc),a1
  1029.     adda.w    d0,a1
  1030.     move.l    a1,18(a0)
  1031.     move.w    d7,50(a0)
  1032.     bra.W    testeffects
  1033. testnewsustain:
  1034.     cmpi.b    #$e8,(a1)        ;E8 = set sustain time
  1035.     bne.s    o49cea
  1036.     move.b    1(a1),26(a0)
  1037.     addq.w    #2,50(a0)
  1038.     bra.W    testsustain
  1039. o49cea:
  1040.     cmpi.b    #$e3,(a1)
  1041.     bne.s    o49d02
  1042.     addq.w    #3,50(a0)
  1043.     move.b    1(a1),27(a0)
  1044.     move.b    2(a1),28(a0)
  1045. o49d02:
  1046.     move.l    18(a0),a1
  1047.     adda.w    50(a0),a1
  1048.     move.b    (a1),43(a0)
  1049.     addq.w    #1,50(a0)
  1050.     VOLUfx:
  1051.     tst.b    25(a0)
  1052.     beq.s    o49d1e
  1053.     subq.b    #1,25(a0)
  1054.     bra.s    o49d70
  1055. o49d1e:
  1056.     subq.b    #1,23(a0)
  1057.     bne.s    o49d70
  1058.     move.b    24(a0),23(a0)
  1059. o49d2a:
  1060.     move.l    10(a0),a1
  1061.     adda.w    16(a0),a1
  1062.     move.b    (a1),d0
  1063.     cmpi.b    #$e8,d0
  1064.     bne.s    o49d4a
  1065.     addq.w    #2,16(a0)
  1066.     move.b    1(a1),25(a0)
  1067.     bra.s    VOLUfx
  1068. o49d4a:
  1069.     cmpi.b    #$e1,d0
  1070.     beq.s    o49d70
  1071.     cmpi.b    #$e0,d0
  1072.     bne.s    o49d68
  1073.     move.b    1(a1),d0
  1074.     andi.l    #$003f,d0
  1075.     subq.b    #5,d0
  1076.     move.w    d0,16(a0)
  1077.     bra.s    o49d2a
  1078. o49d68:
  1079.     move.b    (a1),45(a0)
  1080.     addq.w    #1,16(a0)
  1081. o49d70:
  1082.     move.b    43(a0),d0
  1083.     bmi.s    o49d7e
  1084.     add.b    8(a0),d0
  1085.     add.b    44(a0),d0
  1086. o49d7e:
  1087.     andi.w    #$007f,d0
  1088.     lea    PERIODS(pc),a1
  1089.     add.w    d0,d0
  1090.     move.w    d0,d1
  1091.     adda.w    d0,a1
  1092.     move.w    (a1),d0
  1093.     move.b    46(a0),d7
  1094.     tst.b    30(a0)
  1095.     beq.s    o49d9e
  1096.     subq.b    #1,30(a0)
  1097.     
  1098.     bra.s    o49df4
  1099. o49d9e:
  1100.     move.b    d1,d5
  1101.     move.b    28(a0),d4
  1102.     add.b    d4,d4
  1103.     move.b    29(a0),d1
  1104.     tst.b    d7
  1105.     bpl.s    o49db4
  1106.     btst    #0,d7
  1107.     bne.s    o49dda
  1108. o49db4:
  1109.     btst    #5,d7
  1110.     bne.s    o49dc8
  1111.     sub.b    27(a0),d1
  1112.     bcc.s    o49dd6
  1113.     bset    #5,d7
  1114.     moveq    #0,d1
  1115.     bra.s    o49dd6
  1116. o49dc8:
  1117.     add.b    27(a0),d1
  1118.     cmp.b    d4,d1
  1119.     bcs.s    o49dd6
  1120.     bclr    #5,d7
  1121.     move.b    d4,d1
  1122. o49dd6:
  1123.     move.b    d1,29(a0)
  1124. o49dda:
  1125.     lsr.b    #1,d4
  1126.     sub.b    d4,d1
  1127.     bcc.s    o49de4
  1128.     subi.w    #$0100,d1
  1129. o49de4:
  1130.     addi.b    #$a0,d5
  1131.     bcs.s    o49df2
  1132. o49dea:
  1133.     add.w    d1,d1
  1134.     addi.b    #$18,d5
  1135.     bcc.s    o49dea
  1136. o49df2:
  1137.     add.w    d1,d0
  1138. o49df4:
  1139.     eori.b    #$01,d7
  1140.     move.b    d7,46(a0)
  1141.     
  1142.                     ;  DO THE PORTAMENTO THING
  1143.     moveq    #0,d1
  1144.     move.b    47(a0),d1        ;get portavalue
  1145.     beq.s    a56d0            ;0=no portamento
  1146.     cmpi.b    #$1f,d1
  1147.     bls.s    portaup
  1148. portadown:    
  1149.     andi.w    #$1f,d1
  1150.     neg.w    d1
  1151. portaup:
  1152.     sub.w    d1,56(a0)
  1153. a56d0:
  1154.     add.w    56(a0),d0
  1155. o49e3e:
  1156.     cmpi.w    #$0070,d0
  1157.     bhi.s    nn1
  1158.     move.w    #$0071,d0
  1159. nn1:
  1160.     cmpi.w    #$06b0,d0
  1161.     bls.s    nn2
  1162.     move.w    #$06b0,d0
  1163. nn2:
  1164.     moveq    #0,d1
  1165.     move.b    45(a0),d1
  1166.     rts
  1167.  
  1168.  
  1169.  
  1170. pervol:        dcb.b    16,0        ;Periods & Volumes temp. store
  1171. respcnt:    dc.w    0        ;Replay speed counter    
  1172. repspd:        dc.w    0        ;Replay speed counter temp
  1173. onoff:        dc.w    0        ;Music on/off flag.
  1174. firseq:        dc.w    0        ;First sequence
  1175. lasseq:        dc.w    0        ;Last sequence
  1176. audtemp:    dc.w    0
  1177. spdtemp:    dc.w    0
  1178.  
  1179. V1data:        dcb.b    64,0        ;Voice 1 data area
  1180. offset1:    dcb.b    02,0        ;Is added to start of sound
  1181. ssize1:        dcb.b    02,0        ;Length of sound
  1182. start1:        dcb.b    06,0        ;Start of sound
  1183.  
  1184. V2data:        dcb.b    64,0        ;Voice 2 data area
  1185. offset2:    dcb.b    02,0
  1186. ssize2:        dcb.b    02,0
  1187. start2:        dcb.b    06,0
  1188.  
  1189. V3data:        dcb.b    64,0        ;Voice 3 data area
  1190. offset3:    dcb.b    02,0
  1191. ssize3:        dcb.b    02,0
  1192. start3:        dcb.b    06,0
  1193.  
  1194. V4data:        dcb.b    64,0        ;Voice 4 data area
  1195. offset4:    dcb.b    02,0
  1196. ssize4:        dcb.b    02,0
  1197. start4:        dcb.b    06,0
  1198.  
  1199. o4a0c8:        dc.l    $00000000,$00100003,$00200006,$00300009
  1200. SEQpoint:    dc.l    0
  1201. PATpoint:    dc.l    0
  1202. FRQpoint:    dc.l    0
  1203. VOLpoint:    dc.l    0
  1204.  
  1205.  
  1206.     even
  1207. SILENT:        dc.w    $0100,$0000,$0000,$00e1
  1208.  
  1209. PERIODS:    dc.w    $06b0,$0650,$05f4,$05a0,$054c,$0500,$04b8,$0474
  1210.         dc.w    $0434,$03f8,$03c0,$038a,$0358,$0328,$02fa,$02d0
  1211.         dc.w    $02a6,$0280,$025c,$023a,$021a,$01fc,$01e0,$01c5
  1212.         dc.w    $01ac,$0194,$017d,$0168,$0153,$0140,$012e,$011d
  1213.         dc.w    $010d,$00fe,$00f0,$00e2,$00d6,$00ca,$00be,$00b4
  1214.         dc.w    $00aa,$00a0,$0097,$008f,$0087,$007f,$0078,$0071
  1215.         dc.w    $0071,$0071,$0071,$0071,$0071,$0071,$0071,$0071
  1216.         dc.w    $0071,$0071,$0071,$0071,$0d60,$0ca0,$0be8,$0b40
  1217.         dc.w    $0a98,$0a00,$0970,$08e8,$0868,$07f0,$0780,$0714
  1218.         dc.w    $1ac0,$1940,$17d0,$1680,$1530,$1400,$12e0,$11d0
  1219.         dc.w    $10d0,$0fe0,$0f00,$0e28
  1220.  
  1221. SOUNDINFO:
  1222. ;Offset.l , Sound-length.w , Start-offset.w , Repeat-length.w    
  1223.  
  1224. ;Reserved for samples
  1225.         dc.w    $0000,$0000,    $0000,$0000,    $0001    
  1226.         dc.w    $0000,$0000,    $0000,$0000,    $0001    
  1227.         dc.w    $0000,$0000,    $0000,$0000,    $0001    
  1228.         dc.w    $0000,$0000,    $0000,$0000,    $0001    
  1229.         dc.w    $0000,$0000,    $0000,$0000,    $0001    
  1230.         dc.w    $0000,$0000,    $0000,$0000,    $0001    
  1231.         dc.w    $0000,$0000,    $0000,$0000,    $0001    
  1232.         dc.w    $0000,$0000,    $0000,$0000,    $0001    
  1233.         dc.w    $0000,$0000,    $0000,$0000,    $0001    
  1234.         dc.w    $0000,$0000,    $0000,$0000,    $0001    
  1235. ;Reserved for synth sounds
  1236.         dc.w    $0000,$0000,    $0010,    $0000,    $0010    
  1237.         dc.w    $0000,$0020,    $0010,    $0000,    $0010    
  1238.         dc.w    $0000,$0040,    $0010,    $0000,    $0010    
  1239.         dc.w    $0000,$0060,    $0010,    $0000,    $0010    
  1240.         dc.w    $0000,$0080,    $0010,    $0000,    $0010    
  1241.         dc.w    $0000,$00a0,    $0010,    $0000,    $0010    
  1242.         dc.w    $0000,$00c0,    $0010,    $0000,    $0010    
  1243.         dc.w    $0000,$00e0,    $0010,    $0000,    $0010    
  1244.         dc.w    $0000,$0100,    $0010,    $0000,    $0010    
  1245.         dc.w    $0000,$0120,    $0010,    $0000,    $0010    
  1246.         dc.w    $0000,$0140,    $0010,    $0000,    $0010    
  1247.         dc.w    $0000,$0160,    $0010,    $0000,    $0010    
  1248.         dc.w    $0000,$0180,    $0010,    $0000,    $0010    
  1249.         dc.w    $0000,$01a0,    $0010,    $0000,    $0010    
  1250.         dc.w    $0000,$01c0,    $0010,    $0000,    $0010    
  1251.         dc.w    $0000,$01e0,    $0010,    $0000,    $0010    
  1252.         dc.w    $0000,$0200,    $0010,    $0000,    $0010    
  1253.         dc.w    $0000,$0220,    $0010,    $0000,    $0010    
  1254.         dc.w    $0000,$0240,    $0010,    $0000,    $0010    
  1255.         dc.w    $0000,$0260,    $0010,    $0000,    $0010    
  1256.         dc.w    $0000,$0280,    $0010,    $0000,    $0010    
  1257.         dc.w    $0000,$02a0,    $0010,    $0000,    $0010    
  1258.         dc.w    $0000,$02c0,    $0010,    $0000,    $0010    
  1259.         dc.w    $0000,$02e0,    $0010,    $0000,    $0010    
  1260.         dc.w    $0000,$0300,    $0010,    $0000,    $0010    
  1261.         dc.w    $0000,$0320,    $0010,    $0000,    $0010    
  1262.         dc.w    $0000,$0340,    $0010,    $0000,    $0010    
  1263.         dc.w    $0000,$0360,    $0010,    $0000,    $0010    
  1264.         dc.w    $0000,$0380,    $0010,    $0000,    $0010    
  1265.         dc.w    $0000,$03a0,    $0010,    $0000,    $0010    
  1266.         dc.w    $0000,$03c0,    $0010,    $0000,    $0010    
  1267.         dc.w    $0000,$03e0,    $0010,    $0000,    $0010    
  1268.         dc.w    $0000,$0400,    $0008,    $0000,    $0008    
  1269.         dc.w    $0000,$0410,    $0008,    $0000,    $0008    
  1270.         dc.w    $0000,$0420,    $0008,    $0000,    $0008    
  1271.         dc.w    $0000,$0430,    $0008,    $0000,    $0008    
  1272.         dc.w    $0000,$0440,    $0008,    $0000,    $0008
  1273.         dc.w    $0000,$0450,    $0008,    $0000,    $0008
  1274.         dc.w    $0000,$0460,    $0008,    $0000,    $0008
  1275.         dc.w    $0000,$0470,    $0008,    $0000,    $0008
  1276.         dc.w    $0000,$0480,    $0010,    $0000,    $0010
  1277.         dc.w    $0000,$04a0,    $0008,    $0000,    $0008
  1278.         dc.w    $0000,$04b0,    $0010,    $0000,    $0010
  1279.         dc.w    $0000,$04d0,    $0010,    $0000,    $0010
  1280.         dc.w    $0000,$04f0,    $0008,    $0000,    $0008
  1281.         dc.w    $0000,$0500,    $0008,    $0000,    $0008
  1282.         dc.w    $0000,$0510,    $0018,    $0000,    $0018
  1283.     
  1284.  
  1285. WAVEFORMS:
  1286.         dc.w    $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1287.         dc.w    $3f37,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  1288.         dc.w    $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1289.         dc.w    $c037,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  1290.         dc.w    $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1291.         dc.w    $c0b8,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  1292.         dc.w    $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1293.         dc.w    $c0b8,$b027,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  1294.         dc.w    $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1295.         dc.w    $c0b8,$b0a8,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  1296.         dc.w    $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1297.         dc.w    $c0b8,$b0a8,$a017,$0f07,$ff07,$0f17,$1f27,$2f37
  1298.         dc.w    $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1299.         dc.w    $c0b8,$b0a8,$a098,$0f07,$ff07,$0f17,$1f27,$2f37
  1300.         dc.w    $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1301.         dc.w    $c0b8,$b0a8,$a098,$9007,$ff07,$0f17,$1f27,$2f37
  1302.         dc.w    $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1303.         dc.w    $c0b8,$b0a8,$a098,$9088,$ff07,$0f17,$1f27,$2f37
  1304.         dc.w    $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1305.         dc.w    $c0b8,$b0a8,$a098,$9088,$8007,$0f17,$1f27,$2f37
  1306.         dc.w    $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1307.         dc.w    $c0b8,$b0a8,$a098,$9088,$8088,$0f17,$1f27,$2f37
  1308.         dc.w    $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1309.         dc.w    $c0b8,$b0a8,$a098,$9088,$8088,$9017,$1f27,$2f37
  1310.         dc.w    $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1311.         dc.w    $c0b8,$b0a8,$a098,$9088,$8088,$9098,$1f27,$2f37
  1312.         dc.w    $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1313.         dc.w    $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a027,$2f37
  1314.         dc.w    $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1315.         dc.w    $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a0a8,$2f37
  1316.         dc.w    $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1317.         dc.w    $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a0a8,$b037
  1318.         dc.w    $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1319.         dc.w    $7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1320.         dc.w    $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1321.         dc.w    $817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1322.         dc.w    $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1323.         dc.w    $8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1324.         dc.w    $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1325.         dc.w    $8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1326.         dc.w    $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1327.         dc.w    $8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1328.         dc.w    $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1329.         dc.w    $8181,$8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1330.         dc.w    $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1331.         dc.w    $8181,$8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1332.         dc.w    $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1333.         dc.w    $8181,$8181,$8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f
  1334.         dc.w    $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1335.         dc.w    $8181,$8181,$8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f
  1336.         dc.w    $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1337.         dc.w    $8181,$8181,$8181,$8181,$817f,$7f7f,$7f7f,$7f7f
  1338.         dc.w    $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1339.         dc.w    $8181,$8181,$8181,$8181,$8181,$7f7f,$7f7f,$7f7f
  1340.         dc.w    $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1341.         dc.w    $8181,$8181,$8181,$8181,$8181,$817f,$7f7f,$7f7f
  1342.         dc.w    $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1343.         dc.w    $8181,$8181,$8181,$8181,$8181,$8181,$7f7f,$7f7f
  1344.         dc.w    $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1345.         dc.w    $8181,$8181,$8181,$8181,$8181,$8181,$817f,$7f7f
  1346.         dc.w    $8080,$8080,$8080,$8080,$8080,$8080,$8080,$8080
  1347.         dc.w    $8080,$8080,$8080,$8080,$8080,$8080,$8080,$7f7f
  1348.         dc.w    $8080,$8080,$8080,$8080,$8080,$8080,$8080,$8080
  1349.         dc.w    $8080,$8080,$8080,$8080,$8080,$8080,$8080,$807f
  1350.         dc.w    $8080,$8080,$8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f
  1351.         dc.w    $8080,$8080,$8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f
  1352.         dc.w    $8080,$8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1353.         dc.w    $8080,$8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1354.         dc.w    $8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1355.         dc.w    $8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1356.         dc.w    $8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1357.         dc.w    $8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1358.         dc.w    $8080,$9098,$a0a8,$b0b8,$c0c8,$d0d8,$e0e8,$f0f8
  1359.         dc.w    $0008,$1018,$2028,$3038,$4048,$5058,$6068,$707f
  1360.         dc.w    $8080,$a0b0,$c0d0,$e0f0,$0010,$2030,$4050,$6070
  1361.         dc.w    $4545,$797d,$7a77,$7066,$6158,$534d,$2c20,$1812
  1362.         dc.w    $04db,$d3cd,$c6bc,$b5ae,$a8a3,$9d99,$938e,$8b8a
  1363.         dc.w    $4545,$797d,$7a77,$7066,$5b4b,$4337,$2c20,$1812
  1364.         dc.w    $04f8,$e8db,$cfc6,$beb0,$a8a4,$9e9a,$9594,$8d83
  1365.         dc.w    $0000,$4060,$7f60,$4020,$00e0,$c0a0,$80a0,$c0e0
  1366.         dc.w    $0000,$4060,$7f60,$4020,$00e0,$c0a0,$80a0,$c0e0
  1367.         dc.w    $8080,$9098,$a0a8,$b0b8,$c0c8,$d0d8,$e0e8,$f0f8
  1368.         dc.w    $0008,$1018,$2028,$3038,$4048,$5058,$6068,$707f
  1369.         dc.w    $8080,$a0b0,$c0d0,$e0f0,$0010,$2030,$4050,$6070
  1370.  
  1371. ***************************************************************
  1372. **        End of Future Composer V1.3 replay routine.        **
  1373. ***************************************************************
  1374.  
  1375. ***********************************************
  1376. logo    incbin    df2:bitmaps/InnerCity.bmap
  1377. piccy    incbin    df2:Bitmaps/Hifi.bmap
  1378.  
  1379.     include    df2:include/hwequates.inc
  1380. module    incbin    "df0:mod.razor1911"
  1381.  
  1382.     END
  1383.